Z1CriticalValue <- function(alpha,tails=2){ crit = qnorm(1-alpha/abs(tails)) if(tails==2 || tails==1 )return(crit) if(tails==-1)return(-crit) else return(NA) } ######## Z1CriticalValue(0.05,2) Z1CriticalValue(0.05,-1) ##### Z1CriticalValue(0.05,1) 1 - pnorm(Z1CriticalValue(0.05,1),2.5,1) ####### power.onesample.z <- function(mu,mu0,sigma,n,alpha,tails=2){ Es <- (mu-mu0)/sigma R <- Z1CriticalValue(alpha,tails) m <- sqrt(n)*abs(Es) - abs(R) return(pnorm(m)) } power.onesample.z(75,70,10,25,0.05,1) ###################### curve(power.onesample.z(75,70,10,x,.05,1),20,60,xlab="n",ylab="Power") abline(h=.95,col="red") ###################### n <- 40:45 power <- power.onesample.z(75,70,10,n,.05,1) cbind(n,power) #################### curve(power.onesample.z(75,70,10,x,.05,1),40,50,xlab="n",ylab="Power") abline(h=.95,col="red") abline(v=42) abline(v=43) abline(v=44) ################### Required.n.Z1 <- function(mu,mu0,sigma,alpha,power,tails){ Es <- (mu-mu0)/sigma R <- Z1CriticalValue(alpha,tails) n <- ((qnorm(1-alpha/tails)+qnorm(power))/(abs(Es)))^2 n <- ceiling(n) return(c(n,power.onesample.z(mu,mu0,sigma,n,alpha,tails))) } Required.n.Z1(75,70,10,.05,.95,1) ################### Required.n.Z1(0.20,0,1,0.01,0.90,2)